stream的filter、map和flatMap方法

Java核心技术 卷二

filter、map和flatMap方法

流的转换会产生一个新的流,它的元素派生自另一个流中的元素。

List<String>wordList = ....;
Stream<String> longWords = wordList.stream().filter(w->w.length() > 12);

将所有的单词转化成小写

Stream<String> lowercaseWords = words.stream().map(String::toLowerCase);
这里使用的是带有方法引用的map
或者
Stream<String> firstLetters = words.stream().map(s -> s.toLowerCase());
public static Stream<String> letters(String s){
    List<String> result = new ArrayList<>();
    for(int i = 0 ; i < s.length(); i++){
        result.add(s.subString(i, i + 1));
    }
    return result.stream();
}

例如letters(“boat”)的返回值是流[‘b’, ‘o’, ‘a’, ‘t’]

在一个字符串流上映射letters方法

Stream<Stream<String>> result = words.stream().map( w -> letters(w))

得到一个包含流的流,就像[ [“y”,“o”,“u”,“r”],[“b”,“o”,“a”,“t”] ]。为了将其摊平为字母流[…“y”,“o”,“u”,“r”,“b”,“o”,“a”,“t”],可以使用flatMap方法而不是map方法:

Stream<String>flatResult = words.stream().flatMap(w -> letters(w))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值